package controlador;
import java.awt.AWTEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;


import modeloDAO.JugadorDAO;
import modeloDAO.NivelDAO;
import modeloDAO.RecordDAO;
import modeloDTO.Buscaminas;
import modeloDTO.Jugador;
import modeloDTO.Nivel;
import modeloDTO.Record;

import vista.VistaBuscaminas;
import vista.VistaJugadorP;
import vista.VistaPuntuaciones;

public class ControladorVistaJugador implements ActionListener{
	
	private VistaPuntuaciones  vistaPuntuaciones;
	private VistaJugadorP ventanaJugador;
	private RecordDAO recordDAO;
	private JugadorDAO jugadorDAO;
	private NivelDAO nivelDAO;
	private Nivel nivel;
	VistaBuscaminas ventanaBuscaminas;
	
	public ControladorVistaJugador(Nivel nivelJugado, String tiempo) {
		super();
		ventanaJugador = new VistaJugadorP();
		ventanaJugador.setLocationRelativeTo(null);
		ventanaJugador.setVisible(true);
		ventanaJugador.addListener(this);
		ventanaJugador.setJtxtNombreNivel(nivelJugado.getNombreNivel());
		ventanaJugador.setTiempo(tiempo);
		nivelDAO = new NivelDAO();
		List<String> niveles = new ArrayList<String>();
		niveles = NivelDAO.consultarNombreNiveles();
	}
	
	
	
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		if  (e.getActionCommand().equals("Guardar")) {
			RegistrarRecord();
			ventanaJugador.dispose();
			new ControladorVistaPuntuaciones();
			
		}
			//se deb guardar el codigo del nivel del jugador y del record
			//en la tabla record y el codjugador en la tabla jugador
		else if(e.getActionCommand().equals("Cerrar"))
			ventanaJugador.dispose();
	}
	

	public void RegistrarRecord(){
		try
		{   
			if( ventanaJugador.getNickName().equals(""))
				//Deben estar todos los campos llenos para poder registrar el Record
				ventanaJugador.mostrarMensaje("Debe ingresar el nickname");
			else
			{
				jugadorDAO = new JugadorDAO();
				recordDAO = new RecordDAO();
				nivelDAO = new NivelDAO();
				
				//Objeto FECHA para la defensa
				SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MM-yyyy");
				Date objetoDate = new Date();
			
				
					//aca se debe autogenerar el codigo del jugador
					String codigoJugador = jugadorDAO.consultarUltimoCodigoJugador();
					Jugador player = new Jugador ((String.valueOf(Integer.valueOf(codigoJugador)+1)),ventanaJugador.getNickName());
					jugadorDAO.registrarJugador(player);
					String codigoRecord = recordDAO.consultarUltimoCodigoRecord();
					//String codigoNivel = nivelDAO.consultarNivelCodigo(ventanaJugador.getJComboNivel());
					String codigoNivel = nivelDAO.consultarNivelCodigo(ventanaJugador.getJtxtNombreNivel());
					String fecha = simpleDateFormat.format(objetoDate);
					Record record = new Record(String.valueOf(Integer.valueOf(codigoRecord)+1), String.valueOf(Integer.valueOf(codigoJugador)+1), codigoNivel, Integer.valueOf(ventanaJugador.getTiempo()),fecha);
					recordDAO.registrarRecord(record);
					ventanaJugador.borrarDatos();
					ventanaJugador.mostrarMensaje("El Record se ha registrado exitosamente");
			}
		}
		catch(Exception e)
		{
			ventanaJugador.mostrarMensaje("No se pudo registrar el record obtenido, verifique que los datos sean correctos");
			ventanaJugador.borrarDatos();
		}
	}	
	
}
